package com.neusoft.neu24.mapper;

import com.neusoft.neu24.Result.CommonResult;
import com.neusoft.neu24.dto.*;
import com.neusoft.neu24.entity.*;
import io.swagger.models.auth.In;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * <p>
 * 监督反馈表 Mapper 接口
 * </p>
 *
 * @author fyc
 * @since 2024-06-18
 */
@Mapper
public interface FeedbackMapper {
    /**
     * 获得全部上报记录，to Admin
     * @return
     */
    List<Feedback> listAll();

    /**
     * 获得公众监督员对应的上报记录，to Public
     * @param pid
     * @return
     */
    List<Feedback2PublicDTO> listAllByPid(Integer pid);

    List<FeedbackHis2GridDTO> listFeedbackByGid(Integer gid);

    List<FeedbackInfo> listInfoByIds(@Param("ids") List<Integer> ids);

    List<Aqi2PublicDTO> listAQIsByAids(@Param("aids") List<Integer> aids);

    /**
     * 获得公众监督员上报记录的所对应的网格员信息，to Public
     * @return
     */
    List<Member> listAllGridor(Integer pid);

    /**
     * 公众监督员上报新记录，to Public
     * @param feedback
     * @return
     */
    Integer addFeedbackByPublic(Feedback feedback);

    /**
     * 获得省市区、市区的名字集合，to Public
     * @param ids
     * @return
     */
    List<String> getPCRByIds(@Param("ids") List<Integer> ids);

    /**
     * 通过feedback的id获得上报记录的详细信息，to Public
     * @param fid
     * @return
     */
    FeedbackInfo getInfoByFid(Integer fid);

    /**
     * 上报记录的详细信息，to Public
     * @return
     */
    List<FeedbackInfo> getInfos();


    /**
     * 公众监督员的上报记录的时间线，to Public
     * @return
     */
    List<Feedback> getTimeLines(Integer id);

    /**
     * 通过网格员id查询所有分配到的任务，to Gridor
     * @param gid
     * @return
     */
    List<Feedback2GridDTO> getTodoListByGid(Integer gid);

    FeedbackInfo getAQI(FeedbackInfo info);

    Integer addFeedbackInfo(FeedbackInfo feedbackInfo);

    Integer addFeedback2Info(@Param("fid") Integer fid, @Param("fiid")Integer fiid);

    Integer updateFeedbackDoneById(@Param("id") Integer id, @Param("date") Date date);


    List<Gridor> getGridorsByGid(@Param("gid") Integer gid);

    List<Feedback2AdminDTO> getList();

    List<Feedback2AdminDTO> getListWithInfo(List<Feedback2AdminDTO> list);

    List<FeedbackInfo2AdminDTO> getUndo();

    GridGroupDTO getPCRs();

    Integer updateFeedbackWithGidById(Feedback feedback);

    Integer insertRelationG2M(@Param("id")Integer id,@Param("gid") Integer gid);

    FeedbackInfo2AdminDTO getMnameById(@Param("fid")Integer fid,@Param("gid") Integer gid);
}
